#include "Thread.hpp"
#include "ThreadPool.hpp"
#include "Task.hpp"
#include <unistd.h>
#include <memory>

// push任务的工作应该是业务来做的，底层负责对业务处理
int main()
{
    //++++++假设有一大堆的代码

    ThreadPool<CalTask>::getInstance();//第一次实例化好线程对象

    //刚开始任务队列是空的，那么线程就都会去条件变量上等待
    int x, y;
    char op;
    while (true)
    {
        //下面我们也可以用随机数来搞，不过不带要了
        std::cout << "请输入数据1# ";
        std::cin >> x;
        std::cout << "请输入数据2# ";
        std::cin >> y;
        std::cout << "请输入你要进行的运算# ";
        std::cin >> op;

        CalTask t(x, y, op, mymath);

        // tp->Push(t);
        ThreadPool<CalTask>::getInstance()->push(t);//由于单例模式，所以我们只有一个线程池对象
        
        sleep(1);
    }

    return 0;
}
// while :; do ps -aL | grep threadpool ; sleep 1; echo "+++++++++++++++++++++++++++++" ; done
